Строки.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                        ОТДЕЛ Строки;
(*============================================================================* 
 * НАЗНАЧЕНИЕ: строки для памятки
 *============================================================================*)
ИСПОЛЬЗУЕТ 
  Надел,
  Поле,
  Памятка,
  Вывод ИЗ "..\Обмен\",
  Ввод  ИЗ "..\Обмен\";
ВИД
  Доступ-=ДОСТУП К Вид;
  Вид-=НАБОР(Надел.Вид)
    памятка  :Памятка.Доступ;
    (* строки памятки: *) 
    последняя:ЦЕЛ;
    верхняя  :ЦЕЛ;
    текущая- :ЦЕЛ;
  КОН;

(******************************************************************************)
ЗАДАЧА Отрисовка(строки:Доступ);
ПЕР
  памятка:Памятка.Доступ;
  лк,пк,вс,нс:ЦЕЛ;
  цвет:ЗНАК;
  со:ЦЕЛ;     (* строка отображения *)
  строка:ЦЕЛ; (* памятки *)
УКАЗ
  лк:=строки.лк;
  пк:=строки.пк;
  вс:=строки.вс;
  нс:=строки.нс;
  памятка:=строки.памятка;
  строка:=строки.верхняя;
  ОТ со:=вс+1 ДО нс-1 ВЫП
    ЕСЛИ строка = строки.текущая ТО
      цвет:=Надел.цОтметкиСтроки
    ИНАЧЕ
      цвет:=Надел.цСтроки
    КОН;
    Вывод.ЦветнойПробел(со,лк,со,пк,цвет);
    Вывод.ВПрямоуг(со,лк+1,со,пк-1,памятка.строки[строка]^);
    УВЕЛИЧИТЬ(строка)
  КОН;
  Вывод.ЦветнойПробел(вс,лк,вс,пк,Надел.цСтроки);
  Вывод.ЦветнойПробел(нс,лк,нс,пк,Надел.цСтроки);
  Вывод.Рамка1(вс,лк,нс,пк)
КОН Отрисовка;

(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
  строки:Доступ;
УКАЗ
  строки:=надел(Доступ);
  ДЛЯ посылка ВИДА
  | Поле.Отрисовка:
      Отрисовка(строки)
  | Ввод.ОтМышки:
      ЕСЛИ посылка.события = {} ТО
        (* просто нажали мышку *)
        строки.текущая:=строки.верхняя+посылка.с-1;
        Отрисовка(строки)
      КОН
  | Ввод.ОтКлавиш:
      ВЫБРАТЬ посылка.код ИЗ      
      | 25H,26H: (* <-,^ *)
             ЕСЛИ строки.текущая > 0 ТО
               УМЕНЬШИТЬ(строки.текущая);
               ЕСЛИ строки.текущая < строки.верхняя ТО
                 строки.верхняя:=строки.текущая
               КОН;
               Отрисовка(строки)
             КОН
      | 27H,28H: (* ->,V *)
             ЕСЛИ строки.текущая < строки.последняя ТО
               УВЕЛИЧИТЬ(строки.текущая);
               ЕСЛИ строки.текущая > строки.верхняя+строки.нс-строки.вс-2 ТО
                 строки.верхняя:=строки.текущая-строки.нс+строки.вс+2
               КОН;
               Отрисовка(строки)
             КОН
      ИНАЧЕ
      КОН
  ИНАЧЕ
  КОН
КОН Приём;

(******************************************************************************)
ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ;
ПЕР
  строки:Доступ;
УКАЗ
  СОЗДАТЬ(строки);
  Надел.Подготовить(строки,верх,лево,строк,колонок,{Надел.прВыбираемый},Приём);
  строки.памятка:=памятка;
  строки.последняя:=памятка.строк-1;
  ВОЗВРАТ строки
КОН Создать;

КОН Строки.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы